home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2004 August / The Sunday Times - The Month 2004-08.iso / pc / engine / modules / quiz_dynamic.swf / scripts / frame_1 / DoAction.as
Encoding:
Text File  |  2004-06-24  |  5.7 KB  |  239 lines

  1. function build()
  2. {
  3.    gotoAndStop("begin");
  4. }
  5. function init()
  6. {
  7.    build();
  8. }
  9. function updateRight(frameToDisplay)
  10. {
  11.    preview_mc.gotoAndStop(frameToDisplay);
  12. }
  13. function showQuiz()
  14. {
  15.    txtQuizTitle.text = quizData.title;
  16.    setupScrollPane();
  17.    currRound = 0;
  18.    showRound();
  19. }
  20. function showRound()
  21. {
  22.    mQuizRound.txtIntro.htmlText = "";
  23.    if(currRound == 0)
  24.    {
  25.       mQuizRound.txtIntro.htmlText = quizData.intro + "\r\n";
  26.    }
  27.    mImage.loadMovie(Tardis.ASSETS_FOLDER + "images/kids/quiz/" + quizData.arrRounds[currRound].image);
  28.    mQuizRound.txtIntro.htmlText += quizData.arrRounds[currRound].intro + "\r\n";
  29.    var _loc1_ = currRound == quizData.arrRounds.length - 1;
  30.    mQuizRound.showItems(quizData.arrRounds[currRound].arrItems,_loc1_);
  31.    _visible = true;
  32. }
  33. function onRoundSubmitted(totalCorrect)
  34. {
  35.    totalScore += quizData.arrRounds[currRound].value * totalCorrect;
  36.    currRound++;
  37.    if(currRound < quizData.arrRounds.length)
  38.    {
  39.       showRound();
  40.    }
  41.    else
  42.    {
  43.       mScrollPane._visible = false;
  44.       mScrollPane._x = 900;
  45.       gotoAndStop("results");
  46.    }
  47. }
  48. function showResults()
  49. {
  50.    var _loc1_ = "";
  51.    if(isShowingAnswers == true)
  52.    {
  53.       _loc1_ += quizData.replay;
  54.       txtQuizTitle.text = quizData.title;
  55.    }
  56.    else
  57.    {
  58.       _loc1_ += getResultTextFromScore();
  59.       txtQuizTitle.text = quizData.resultsTitle;
  60.    }
  61.    txtResults.htmlText = _loc1_;
  62. }
  63. function getResultTextFromScore()
  64. {
  65.    var _loc1_ = 0;
  66.    while(_loc1_ < quizData.arrCategories.length)
  67.    {
  68.       if(quizData.arrCategories[_loc1_].score <= totalScore)
  69.       {
  70.          break;
  71.       }
  72.       _loc1_ = _loc1_ + 1;
  73.    }
  74.    return quizData.arrCategories[_loc1_].text;
  75. }
  76. function replayQuiz(showAnswers)
  77. {
  78.    isShowingAnswers = showAnswers;
  79.    gotoAndStop("begin");
  80.    play();
  81. }
  82. function setupScrollPane()
  83. {
  84.    this.attachMovie("FScrollPaneSymbol","mScrollPane",15);
  85.    mScrollPane._x = 10;
  86.    mScrollPane._y = 40;
  87.    mScrollPane.setSize(351,339);
  88.    mScrollPane.setHScroll(false);
  89.    mScrollPane.setScrollContent(mQuizRound);
  90. }
  91. function parseNodeData(nodeData)
  92. {
  93.    var _loc3_ = new Object();
  94.    var _loc2_ = nodeData.firstChild.childNodes;
  95.    var _loc1_ = 0;
  96.    while(_loc1_ < _loc2_.length)
  97.    {
  98.       if(_loc2_[_loc1_].nodeName == "rounds")
  99.       {
  100.          _loc3_.arrRounds = parseRoundNodes(_loc2_[_loc1_].childNodes);
  101.       }
  102.       else if(_loc2_[_loc1_].nodeName == "categories")
  103.       {
  104.          _loc3_.arrCategories = parseCategoryNodes(_loc2_[_loc1_].childNodes);
  105.       }
  106.       else
  107.       {
  108.          _loc3_[_loc2_[_loc1_].nodeName] = _loc2_[_loc1_].firstChild.nodeValue;
  109.       }
  110.       _loc1_ = _loc1_ + 1;
  111.    }
  112.    return _loc3_;
  113. }
  114. function parseCategoryNodes(arrNodes)
  115. {
  116.    var _loc3_ = arrNodes;
  117.    var _loc2_ = new Array();
  118.    var _loc1_ = 0;
  119.    while(_loc1_ < _loc3_.length)
  120.    {
  121.       _loc2_[_loc1_] = new Object();
  122.       _loc2_[_loc1_].score = Number(_loc3_[_loc1_].attributes.score);
  123.       _loc2_[_loc1_].text = _loc3_[_loc1_].firstChild.nodeValue;
  124.       _loc1_ = _loc1_ + 1;
  125.    }
  126.    return _loc2_;
  127. }
  128. function parseRoundNodes(arrNodes)
  129. {
  130.    var _loc2_ = arrNodes;
  131.    var _loc3_ = new Array();
  132.    var _loc1_ = 0;
  133.    while(_loc1_ < _loc2_.length)
  134.    {
  135.       if(_loc2_[_loc1_].nodeName == "round")
  136.       {
  137.          _loc3_.push(parseRoundNode(_loc2_[_loc1_].childNodes));
  138.       }
  139.       _loc1_ = _loc1_ + 1;
  140.    }
  141.    return _loc3_;
  142. }
  143. function parseRoundNode(arrNodes)
  144. {
  145.    var _loc2_ = arrNodes;
  146.    var _loc3_ = new Object();
  147.    var _loc1_ = 0;
  148.    while(_loc1_ < _loc2_.length)
  149.    {
  150.       if(_loc2_[_loc1_].nodeName == "intro")
  151.       {
  152.          _loc3_.intro = _loc2_[_loc1_].firstChild.nodeValue;
  153.       }
  154.       else if(_loc2_[_loc1_].nodeName == "value")
  155.       {
  156.          _loc3_.value = Number(_loc2_[_loc1_].firstChild.nodeValue);
  157.       }
  158.       else if(_loc2_[_loc1_].nodeName == "image")
  159.       {
  160.          _loc3_.image = _loc2_[_loc1_].firstChild.nodeValue;
  161.       }
  162.       else if(_loc2_[_loc1_].nodeName == "items")
  163.       {
  164.          _loc3_.arrItems = parseItemNodes(_loc2_[_loc1_].childNodes);
  165.       }
  166.       _loc1_ = _loc1_ + 1;
  167.    }
  168.    return _loc3_;
  169. }
  170. function parseItemNodes(arrNodes)
  171. {
  172.    var _loc2_ = arrNodes;
  173.    var _loc3_ = new Array();
  174.    var _loc1_ = 0;
  175.    while(_loc1_ < _loc2_.length)
  176.    {
  177.       _loc3_.push(parseItemNode(_loc2_[_loc1_].childNodes,_loc1_ + 1));
  178.       _loc1_ = _loc1_ + 1;
  179.    }
  180.    return _loc3_;
  181. }
  182. function parseItemNode(arrNodes, itemNumber)
  183. {
  184.    var _loc3_ = arrNodes;
  185.    var obj = new Object();
  186.    obj.questionNumber = itemNumber;
  187.    obj.arrChoices = new Array();
  188.    var _loc2_ = 0;
  189.    while(_loc2_ < _loc3_.length)
  190.    {
  191.       if(_loc3_[_loc2_].nodeName == "question")
  192.       {
  193.          obj.question = _loc3_[_loc2_].firstChild.nodeValue;
  194.       }
  195.       else if(_loc3_[_loc2_].nodeName == "answer")
  196.       {
  197.          obj.answer = Number(_loc3_[_loc2_].firstChild.nodeValue);
  198.       }
  199.       else if(_loc3_[_loc2_].nodeName == "choice")
  200.       {
  201.          var arrChoiceNodes = _loc3_[_loc2_].childNodes;
  202.          var _loc1_ = 0;
  203.          while(_loc1_ < arrChoiceNodes.length)
  204.          {
  205.             obj.arrChoices.push(arrChoiceNodes[_loc1_].firstChild.nodeValue);
  206.             _loc1_ = _loc1_ + 1;
  207.          }
  208.       }
  209.       _loc2_ = _loc2_ + 1;
  210.    }
  211.    return obj;
  212. }
  213. this.onUnload = function()
  214. {
  215.    this.unloadMovie();
  216. };
  217. stop();
  218. if(this == _root)
  219. {
  220.    theFile = "quiz_dynamic.xml";
  221.    var nodeData = new XML();
  222.    nodeData.ignoreWhite = true;
  223.    nodeData.onLoad = function(success)
  224.    {
  225.       if(success)
  226.       {
  227.          quizData = parseNodeData(this);
  228.          build();
  229.       }
  230.    };
  231.    nodeData.load(theFile);
  232. }
  233. else
  234. {
  235.    _visible = false;
  236.    quizData = parseNodeData(_parent.ndContent);
  237.    onReady();
  238. }
  239.